import request from 'request'; //请求包 请求别人的包。
import { getAll } from './rc'
import downLoadGit from 'download-git-repo'; //下载git仓库的
import {DOWNLOAD} from './constants'

// 请求别人的包。
let fetch = async (url) => {
    return new Promise((resolve, reject) => {
        let config = {
            url,
            method: 'get',
            headers: {
                // github规定请求必须加，，，
                'user-agent': 'xxx'
            }
        }
        request(config, (err, response, body) => {
            if (err) {
                reject(err);
            };
            resolve(JSON.parse(body))
        })
    })
}


//链接地址：https://api.github.com/repos/zhufeng-cli/vue-template/tags 版本
export let tagList = async (repo) => {
    // 拿到那个项目下和那个版本号?具体是//?
    let config = await getAll();
    let api = `https://api.github.com/repos/${config.registry}/${repo}/tags`;
    console.log(api,'api-仓库地址。。。')
    return await fetch(api)
}

// 获取远程仓库的信息
//链接地址：https://api.github.com/orgs/zhufeng-cli/repos 项目
export let repoList = async () => {
    let config = await getAll();
    // 前边自己写的，我通过方法取出来。。。
    let api = `https://api.github.com/${config.type}/${config.registry}/repos`;
    console.log(api,'repoList获取远程仓库的信息。。。')
    return await fetch(api);
}


export let download = async (src, dest) => {
    return new Promise((resolve, reject) => {
        // 从哪下载src. 下载到哪里dest  ???第三是出错//
        downLoadGit(src, dest, (err) => {
            if (err) {
                reject(err);
            }
            resolve(dest);
        })
    })
}


//下载git版本
// 下载到本地  下载目录、、、
// 项目名和版本号...
export let downloadLocal = async (project, version) => {
    let config=await getAll()
    // https://api.github.com/repos/zhufeng-cli/vue-template/tags
    // api规定，，是那个仓库？？？那个项目？？
    // 比如是。zhufeng-cli/vue-template
    let api =`${config.registry}/${project}`;
    if(version){//有版本就加版本号。。
        // https://api.github.com/repos/zhufeng-cli/vue-template#v3
        api += `#${version}`;
    }
    // 下载到 比如是vue-template
    // 那就下载到C:\Users\Administrator/.zfclirc/.template/vue-template
    let dest= await download(api,DOWNLOAD+'/'+project);
     return dest;
}

// 具体仓库
// https://api.github.com/orgs/zhufeng-cli/repos  
// vue-template项目的具体版本号
// https://api.github.com/repos/zhufeng-cli/vue-template/tags
// vue-template项目的v2.0.0版本
//https://api.github.com/repos/zhufeng-cli/vue-template#v2.0.0